﻿using JunionRobotTaskManager.Models;

namespace JunionRobotTaskManager.Dtos
{
    public class SystemInfoDto
    {
        /// <summary>
        /// Socket服务端口号
        /// </summary>
        public int Port { get; set; }

        /// <summary>
        /// 最大电量
        /// </summary>
        public int MaxPower { get; set; }

        /// <summary>
        /// 最小电量
        /// </summary>
        public int MinPower { get; set; }

        /// <summary>
        /// 充电至该电量可做任务
        /// </summary>
        public int ChargePower { get; set; }

        /// <summary>
        /// 可用状态
        /// </summary>
        public string[] AvailableStatus { get; set; }

        /// <summary>
        /// 是否MES创建任务
        /// </summary>
        public bool IsMesCreateJob { get; set; }

        /// <summary>
        /// 是否是MES控制对接过程
        /// </summary>
        public bool IsMesControlDeliver { get; set; }

        /// <summary>
        /// 上报MES任务状态url
        /// </summary>
        public string DeliveryUrl { get; set; }

        /// <summary>
        /// 上报任务完成的Url
        /// </summary>
        public string CompleteUrl { get; set; }

        /// <summary>
        /// 区域校验
        /// </summary>
        public bool IsRegionCheck { get; set; }

        /// <summary>
        /// 是否物料校验
        /// </summary>
        public bool IsMaterialCheck { get; set; }

        /// <summary>
        /// 是否管控Park
        /// </summary>
        public bool IsParkControl { get; set; }


        /// <summary>
        /// 位置校验，机器人是否到位
        /// </summary>
        public bool IsPositionCheck { get; set; }

        /// <summary>
        /// 单接单送执行完成后是否在当前位置执行配对的接料和送料
        /// </summary>
        public bool IsQuickMatch { get; set; }

        public bool IsCallbuttonInitial { get; set; }

        /// <summary>
        /// 在park点空闲时间至该值且该值>0时可去充电
        /// </summary>
        public int IdleCharginTime { get; set; }

        /// <summary>
        /// 若机器人电量>=该值，即使到达空闲时间也不去充电
        /// </summary>
        public int IdleNotChargePower { get; set; }

        /// <summary>
        /// 是否启用标定：是则启用电池标定功能;反之禁用
        /// </summary>
        public bool EnableCalibration { get; set; }

        /// <summary>
        /// 启用标定时间节点/day: 到达该节点启用标定功能
        /// </summary>
        public int TimeNode { get; set; }

        /// <summary>
        /// 标定启用开始时间:启用标定功能后开始标定时间戳
        /// </summary>
        public string CalibrationEnableStartTime { get; set; }

        /// <summary>
        /// 标定启用结束时间:启用标定功能后结束标定时间戳
        /// </summary>
        public string CalibrationEnableEndTime { get; set; }

        /// <summary>
        /// 标定时长/minute:电量100后标定时长
        /// </summary>
        public int CalibrationSpan { get; set; }

        // hay add 20240521
        public bool HasElevator { get; set; }

        public string ElevatorIP { get; set; }

        public int ElevatorLowestFloor { get; set; }

        public int ElevatorHightestFloor { get; set; }

        public int ElevatorCallSpanTime { get; set; }
    }
}
